import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        LinkedList<Integer> list=new LinkedList<>();

        List<String> list1=new ArrayList<>();
        list1.add("JavaSE");
        list1.add("JavaWeb");
        list1.add("JavaEE");
        // 使⽤ArrayList构造LinkedList

        //这段代码之所以可以运行，是因为 LinkedList 构造函数可以接受另一个 Collection 作为参数，
        // 并将该集合中的所有元素拷贝到新的 LinkedList 中。

        //在 Java 中，ArrayList 和 LinkedList 都实现了 List 接口，
        // 而 List 接口又继承自 Collection 接口。因此，ArrayList 和 LinkedList
        // 都是 Collection 类型的实现。
        List<String> list2=new LinkedList<>(list1);
        System.out.println(list2);



        list.add(1); // add(elem): 表⽰尾插
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        list.add(7);
        System.out.println(list.size());
        System.out.println(list);

        // 在起始位置插⼊0
        list.add(0, 0); // add(index, elem): 在index位置插⼊元素elem
        System.out.println(list);

        list.remove(); // remove(): 删除第⼀个元素，内部调⽤的是removeFirst()
        list.removeFirst(); // removeFirst(): 删除第⼀个元素
        list.removeLast(); // removeLast(): 删除最后元素
        list.remove(1); // remove(index): 删除index位置的元素
        System.out.println(list);

        // contains(elem): 检测elem元素是否存在，如果存在返回true，否则返回false
        if(!list.contains(1)){
            list.add(0, 1);
        }
        list.add(1);//在尾部添加
        System.out.println(list);
        System.out.println(list.indexOf(1)); // indexOf(elem): 从前往后找到第⼀个elem的位置
        System.out.println(list.lastIndexOf(1)); // lastIndexOf(elem): 从后往前找第⼀个1的位置 返回元素的下标
        int elem = list.get(0); // get(index): 获取指定位置元素
        System.out.println(elem);
        list.set(0, 100); // set(index, elem): 将index位置的元素设置为elem
        System.out.println(list);

        // subList(from, to): ⽤list中[from, to)之间的元素构造⼀个新的LinkedList返回
        List<Integer> copy = list.subList(0, 3);
        System.out.println(list);
        System.out.println(copy);
        list.clear(); // 将list中元素清空
        System.out.println(list.size());

    }
}
